CLASS API
2022-06-23 08:24:05 プロジェクトを削除しました。もう使えません
CLASSが新システムに移行するのに合わせて、旧システムをweb scrapingするserverを削除する必要がありました
新システムはpush通知などまともな機能を搭載しているっぽいので、新しい野良APIは多分作りません
/icons/hr.icon
CLASSの情報をjson形式で取得できるREST API
takker99/tus-class-api
書式
全てPOSTで使う
次の値をURLSearchParamsとして同時に送信する
userId: 学籍番号
password: password
平文で送ってしまっていますが勘弁してくださいtakker.icon
HTTPS通信で保護されてるから許して
form dataではなくapplication/x-www-form-urlencodedを使うようにした
Google Apps ScriptからForm Dataを使うのが困難だったので
/icons/done.iconhttps://tus-class-api.vercel.app/v1/announces/summary
カテゴリの一覧とお知らせ件数を取得する
CLASSAPI/loginに該当する
/icons/done.iconhttps://tus-class-api.vercel.app/v1/announces/list?category=:categoryId
カテゴリごとのCLASSのお知らせの見出しを取得する
CLASSAPI/listに該当する
/icons/done.iconhttps://tus-class-api.vercel.app/v1/announces/announce?category=:categoryId&announce=:announceId
CLASSのお知らせを取得する
CLASSAPI/announceに該当する
/icons/done.iconhttps://tus-class-api.vercel.app/v1/announces/file?category=:categoryId&announce=:announceId&file=:fileId
CLASSのお知らせに添付されているファイルを一つ返す
Blobで返す
CLASS APIにfile download機能をつける
https://tus-class-api.vercel.app/v1/users/me/basic
自分の学籍情報を取得する
https://tus-class-api.vercel.app/v1/users/me/grades
成績情報を取得する
https://tus-class-api.vercel.app/v1/users/me/timetable
時間割を取得する
https://tus-class-api.vercel.app/v1/schedules/:year/:semester/:department/:grade
授業時間割表を取得する
GET
認証情報を送る必要がない
/icons/done.iconhttps://tus-class-api.vercel.app/v1/syllabuses/search
CLASSシラバス照会を操作する
parameters
year: 年度
defaultはnew Date().getFullYear()
term: 学期のID
defaultは空文字
type: 科目授業種別のID
defaultはall
keyword_course: キーワード検索 (科目名称)
defaultは空文字
keyword_instructor: キーワード検索 (教員氏名)
defaultは空文字
keyword: キーワード検索 (全文)
defaultは空文字
department: 学科のID
defaultはall
例:土木工学科の場合は16A
grade: 学年
defaultは空文字 (全て対象)
day: 曜日
0 から 6まで
defaultはall
hour: 時限
0から6まで
defaultはall
concentration: 集中授業のみ対象とする場合はtrue
defaultはfalse
skip: 検索結果画面の何ページ目を取得するか
0から数える
defaultは0
応答の型
code:ts
type Respose = {
// errorの場合
ok: false;
message: string; // #htmlErrorMessageの文字列を取得する
} | {
ok: true;
count: number; // 検索件数 #form1:htmlKekkatable:htmlGokeiKensuから取得できる
pageCount: number; // 検索結果のページ数 #form1:htmlKekkatable:deluxe1__pagerText から取得できる
query: {/*...*/}; // 検索クエリ
displayQuery : {/*...*/} // フォームで実際に表示される検索クエリ
skip: number;
courses: {
department: string; // #form1:htmlKekkatable:${count}:htmlCurGakkaRyakCol.title
year: number; // #form1:htmlKekkatable:${count}:htmlGakkiNoCol.textContent
term: string; // #form1:htmlKekkatable:${count}:htmlGakkiNoCol.textContent
hours: { // #form1:htmlKekkatable:${count}:htmlKaikoYobiCol.textContent
day: number;
hour: number;
}[];
id: number; // #form1:htmlKekkatable:${count}:htmlKamokuNameCol.title
title: string; // #form1:htmlKekkatable:${count}:htmlKamokuNameCol.title
instructors: string[]; // #form1:htmlKekkatable:${count}:htmlKyoinSimeiCol.title
type: string; // 開講区分 #form1:htmlKekkatable:${count}:htmlJyugyoKbnCol.textContent
}[];
};
/icons/done.iconhttps://tus-class-api.vercel.app/v1/syllabuses/:year/:courseId
特定のsyllabus (CLASS)を取得する
parameters
year: 開講年度
courseId: 授業コード
応答の型
code:ts
type Response = {
label?: string; // <th>の値
value?: string; // <td>の値
}[];
既知の問題
実装したいこと
✅Access-Control-Allow-Originを*にする
実装
vercel-denoを用いる
2022-05-19 07:42:07 久々にrepoを開いたら理科大生のstartがついてた
うれしいtakker.icon
まあCLASSシステムの刷新でそろそろ使えなくなるだろうけど
followしたほうがいいのかな?
2021-04-11 22:09:58 ?format=trueでsyllabus dataを使いやすく整形するようにした
2021-04-09 22:39:14 file download機能をつけた
test code
localhostもしくはhttps://tus-class-api.vercel.appを開いているタブの開発コンソールに貼り付ける
code:js
(async () => {
const formData = new FormData();
formData.append('userId', 'xxx');
formData.append('password', 'yyy');
await fetch('/vi/announces/summary', {method: 'POST', body: formData});
})();
#2022-06-23 08:25:46
#2022-05-19 07:42:36
#2022-04-12 08:34:01
#2021-06-24 17:00:38
#2021-04-11 19:12:42
#2021-04-10 20:42:52
#2021-04-09 21:34:58
#2021-04-06 02:10:04
#2021-02-11 03:23:38